package net.oschina.arvin.sqlbuilder.annotations;

import net.oschina.arvin.sqlbuilder.enums.ColumnMapStrategy;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * 数据库列
 *
 * @author Arvin
 * @time 2017/11/16 08:50
 */
@Target(FIELD)
@Retention(RUNTIME)
public @interface Column {

    /**
     * (Optional) 对应数据库表的名称，默认是 Java类模型的属性下划线方式
     */
    String name() default "";

    /**
     * java属性和数据库属性映射策略， 默认是下划线分割
     */
    ColumnMapStrategy mapStrategy() default ColumnMapStrategy.UNDERLINE;

    /**
     * 添加的时候使用当前时间填充
     */
    boolean useCurrentTimeWhenAdd() default false;

    /**
     * 更新的时候使用当前时间填充
     */
    boolean useCurrentTimeWhenUpdate() default false;

    /**
     * 插入的时候，忽略该属性
     */
    boolean insertIgnore() default false;

    /**
     * 更新的时候，实现忽略该属性的更新
     */
    boolean updateIgnore() default false;

}
